from flask import Blueprint
from flask import redirect
from flask import url_for
from flask import request

blue = Blueprint('blue', __name__)


def init_view(app):
    app.register_blueprint(blue)


# 视图函数默认支持GET\HEAD\OPTIONS，其余请求不能支持，想要支持其他请求，需要手动添加
@blue.route("/", methods=['GET', 'POST'])
def index():
    return "Index"


# 视图函数默认支持GET\HEAD\OPTIONS，其余请求不能支持，想要支持其他请求，需要手动添加
@blue.route("/users/<id>/", methods=['GET', 'POST'])
def users(id):
    print(id)
    return "Users API"


# 视图函数默认支持GET\HEAD\OPTIONS，其余请求不能支持，想要支持其他请求，需要手动添加
@blue.route("/getinfo/<string:token>/", methods=['GET', 'POST'])
@blue.route("/gettoken/<int:token>/", methods=['GET', 'POST'])
def getinfo(token):
    print(token, type(token))
    return "get Success"


# 视图函数默认支持GET\HEAD\OPTIONS，其余请求不能支持，想要支持其他请求，需要手动添加
@blue.route("/getpath/<path:address>/", methods=['GET', 'POST'])
def get_path(address):
    print(address, type(address))
    return "Address Success!"


# 视图函数默认支持GET\HEAD\OPTIONS，其余请求不能支持，想要支持其他请求，需要手动添加
@blue.route("/getuuid/<uuid:uu>/", methods=['GET', 'POST'])
def get_uuid(uu):
    print(uu, type(uu))
    return "uuid Success!"


# 视图函数默认支持GET\HEAD\OPTIONS，其余请求不能支持，想要支持其他请求，需要手动添加
@blue.route("/getany/<any(a,b,c):an>/", methods=['GET', 'POST'])
def get_any(an):
    print(an, type(an))
    return "Any Success!"


# 视图函数默认支持GET\HEAD\OPTIONS，其余请求不能支持，想要支持其他请求，需要手动添加
@blue.route("/redirect/", methods=['GET', 'POST'])
def red():
    # print(an, type(an))
    # return redirect('/')

    # return redirect(url_for('blue.index'))  # 反向解析  括号里面为  蓝图名字+函数名字
    return redirect(url_for('blue.get_any', an='a'))  # 反向解析  括号里面为  (蓝图名字.函数名字,参数)


# 视图函数默认支持GET\HEAD\OPTIONS，其余请求不能支持，想要支持其他请求，需要手动添加
@blue.route("/getrequest/", methods=['GET', 'POST'])
def get_request():
    print(request.host, request.url)
    if request.method == 'GET':
        return "GET Success"
    elif request.method == 'POST':
        return "POST Success"
    else:
        return "%s Not Support" % request.method
